home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #111 (1991-01)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #111 (1991-01)(Amiga User Group Deutschland e.V.).adf
/
IntroMaker_V1.2
/
Utilities
/
ConvertST.asm
< prev
next >
Wrap
Assembly Source File
|
1989-07-03
|
4KB
|
214 lines
* Convert SoundTracker by E.Hambuch
* konvertiert SoundTrackerfiles in ladbares Format
* für IntroMaker Version 1.1
* für A68k-Assembler
CALLEXEC: macro
move.l 4,a6
jsr _LVO\1(a6)
endm
CALLDOS: macro
move.l _DOSBase,a6
jsr _LVO\1(a6)
endm
_LVOOldOpenLibrary: equ -408
_LVOCloseLibrary: equ -414
MODE_OLDFILE: equ 1005
MODE_NEWFILE: equ 1006
_LVOOpen: equ -30
_LVOClose: equ -36
_LVORead: equ -42
_LVOWrite: equ -48
_LVOInput: equ -54
_LVOOutput: equ -60
_LVOLock: equ -84
_LVOUnLock: equ -90
_LVOExamine: equ -102
pr_CLI equ $ac
pr_MsgPort equ $5c
movem.l d0/a0,-(sp)
clr.l _WBenchMsg
sub.l a1,a1
move.l 4,a6 ; ExecBase
jsr -294(a6) ; FindTask
move.l d0,a4
tst.l pr_CLI(a4)
beq.s fromWorkbench
movem.l (sp)+,d0/a0
bra run
fromWorkbench
lea pr_MsgPort(a4),a0
jsr -384(a6) ; WaitPort
lea pr_MsgPort(a4),a0
jsr -372(a6) ; GetMsg
move.l d0,_WBenchMsg
movem.l (sp)+,d0/a0
run
bsr.s _main
move.l d0,-(sp)
tst.l _WBenchMsg
beq.s _exit
move.l 4,a6 ; ExecBase
jsr -132(a6) ; Forbid
move.l _WBenchMsg(pc),a1
jsr -378(a6) ; ReplyMsg
_exit
move.l (sp)+,d0
rts
_WBenchMsg
ds.l 1
even
_main:
lea dosname,a1
CALLEXEC OldOpenLibrary
move.l d0,_DOSBase
beq ende
tst.l _WBenchMsg
beq clistart
move.l #fenster,d1
move.l #MODE_NEWFILE,d2
CALLDOS Open
move.l d0,Out
move.l d0,Inp
beq closedos
bra start
clistart:
CALLDOS Output
move.l d0,Out
beq closedos
jsr _LVOInput(a6)
move.l d0,Inp
beq closedos
start:
lea text1,a0
bsr print
forever:
lea text2,a0
bsr print
move.l Inp,d1
move.l #Buffer1,d2
moveq #79,d3
jsr _LVORead(a6)
cmp.b #1,d0
ble closedos
lea Buffer1,a0
clr.b -1(a0,d0.w)
lea text3,a0
bsr print
move.l Inp,d1
move.l #Buffer2,d2
moveq #79,d3
jsr _LVORead(a6)
lea Buffer2,a0
clr.b -1(a0,d0.w)
move.l #Buffer1,d1
bsr filelen
move.l d0,Len
bne.s w0
lea text4,a0
bsr print
bra forever
w0:
move.l #Buffer1,d1
move.l #MODE_OLDFILE,d2
jsr _LVOOpen(a6)
move.l d0,File1
bne.s w1
lea text4,a0
bsr print
bra forever
w1:
move.l #Buffer2,d1
move.l #MODE_NEWFILE,d2
jsr _LVOOpen(a6)
move.l d0,File2
bne.s w2
move.l File1,d1
jsr _LVOClose(a6)
lea text5,a0
bsr print
bra forever
w2:
move.l File2,d1
move.l #Len,d2
moveq #4,d3
jsr _LVOWrite(a6)
move.l File2,d1
move.l #Period,d2
moveq #2,d3
jsr _LVOWrite(a6)
writesamp:
move.l File1,d1
move.l #FIBlock,d2
move.l #260,d3
jsr _LVORead(a6)
move.l d0,d3
ble closefiles
move.l File2,d1
move.l #FIBlock,d2
jsr _LVOWrite(a6)
tst.l d0
bpl writesamp
closefiles:
move.l File1,d1
jsr _LVOClose(a6)
move.l File2,d1
jsr _LVOClose(a6)
bra forever
closeall:
tst.l _WBenchMsg
beq.s closedos
move.l Out,d1
CALLDOS Close
closedos:
move.l _DOSBase,a1
CALLEXEC CloseLibrary
ende: rts
print:
move.l a0,a1
s00: tst.b (a1)+
bne.s s00
suba.l a0,a1
move.l Out,d1
move.l a0,d2
move.l a1,d3
subq.l #1,d3
jmp _LVOWrite(A6)
filelen:
moveq #-2,d2
CALLDOS Lock
move.l d0,d7
beq endfilelen
move.l d0,d1
move.l #FIBlock,d2
jsr _LVOExamine(a6)
move.l d0,-(sp)
move.l d7,d1
jsr _LVOUnLock(a6)
move.l (sp)+,d0
beq.s endfilelen
move.l FIBlock+124,d0
endfilelen: rts
DATA
dosname: dc.b 'dos.library',0
text1: dc.b 'ConvertSoundTracker 1.1 by E.Hambuch',10
dc.b '------------------------------------',10,10,0
text2: dc.b 'In>',0
text3: dc.b 'Out>',0
text4: dc.b 'Cant open input file !',10,7,0
text5: dc.b 'Cant open output file !',10,7,0
fenster: dc.b 'CON:0/0/640/200/ConvertST V1.1',0
even
Period: dc.w 15625 ;Frequenz in Herz
BSS
_DOSBase: ds.l 1
Out: ds.l 1
Inp: ds.l 1
Len: ds.l 1
File1: ds.l 1
File2: ds.l 1
cnop 0,4 ;muß auf Langwort liegen
FIBlock: ds.b 264
Buffer1: ds.b 80
Buffer2: ds.b 80
END